SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

CREATE PROCEDURE [dbo].[SP_TCDOCU_PAGA_Q01]        
/*---------------------------------------------------------------- */        
/*-- Empresa  : OFISIS S.A.           */        
/*-- Cliente  : OFISIS            */        
/*-- Sistema  : Tesoreria           */        
/*-- Programa  : Reporte Seguimiento Aplicaciones Pagos O/C          
    a FACTURAS           */        
/*-- Script  : SP_TCDOCU_PAGA_Q01         */        
/*-- Nombre  : SP_TCDOCU_PAGA_Q01         */        
/*-- Desarrollado : Andres Soria         */        
/*-- Fecha  : 18/10/2011           */        
/*-- Base de Datos : MS SQL Server         */        
/*-- Versi®n  : 7.0             */        
/*---------------------------------------------------------------- */        
        
/*---------------------------------------------------------------- */        
/*-- Modificado por  :            */        
/*-- Fecha modificaci®n  :           */        
/*-- Detalle modificaci®n:   n          */        
/*---------------------------------------------------------------- */        
/* drop proc SP_TCDOCU_PAGA_Q01          */        
/* grant all on SP_TCDOCU_PAGA_Q01 to public      */        
/* SP_TCDOCU_PAGA_Q01 '01', '00000002', '00000002'     */        
/*----------------------------------------------------------------*/        
        
 @ISCO_EMPR TD_VC_002,        
 @ISCO_UNID_CONC TD_VC_003,        
 @ISNU_AMAR_INIC TD_VC_008,         
 @ISNU_AMAR_FINA TD_VC_008,        
 @IDFE_AMAR TD_DT_001        
 As        
Declare        
 @CSCO_TIDO_ORIG   TD_VC_003,        
 @CSNU_DOCU_ORIG   TD_VC_020,        
 @CSCO_TIDO_DEST   TD_VC_003,        
 @CSNU_DOCU_DEST   TD_VC_020,        
 @CSNU_AMAR        TD_VC_008,        
 @CDFE_AMAR    TD_DT_001,        
 @CSCO_MONE    TD_VC_003,        
 @CNIM_TOTA   TD_NU_016_004,        
 @CNIM_PAGO_DEST   TD_NU_016_004,        
 @VSNU_AMAR_AUXI   TD_VC_008,        
 @VINU_SECU        TD_IN_001,    
 @CSCO_CNTA_EMPR TD_VC_020,    
 @CSTI_AUXI_DOCU   TD_VC_001,    
 @CSCO_PROV TD_VC_020,    
 @CSCO_ORDE_SERV    TD_VC_020,  
 @VSCO_MONE_NACI TD_VC_003,   
 @VSCO_MONE_EXTR TD_VC_003,  
 @VSTI_CAMB TD_VC_001,   
 @VSTI_ORIG TD_VC_001  
        
  Create Table #TWDOCU_PAGA        
  ( NU_TRAN        Varchar(8) NULL,         
    NU_SECU        int  NULL,          
    FE_AMAR    Datetime  NULL,        
    CO_MONE    VarChar(3)   NULL,         
    CO_TIDO_ORIG   VarChar(3)   NULL,        
    NU_DOCU_ORIG   VarChar(15)   NULL,        
    IM_PAGO_ORIG   NUMERIC(16,4),        
    CO_TIDO_DEST   VarChar(3)   NULL,        
    NU_DOCU_DEST   VarChar(15)   NULL,        
    IM_PAGO_DEST   NUMERIC(16,4),  
    TI_AUXI_DOCU     Varchar(3) NULL,    
    CO_PROV   Varchar(20) NULL)        
        
--Select @VINU_SECU = 0        
-- El CU_TDDOCU_PAGA_Q01_1 posee un documento con su n-mero   
  
  
 SELECT @VSCO_MONE_NACI = CO_MONE_DEFA,           
   @VSCO_MONE_EXTR = CO_MONE_EXTR                      
 FROM TMPARA_TESO            
 WHERE CO_EMPR = @ISCO_EMPR            
  
  
  Select @VSTI_CAMB = TI_CAMB, @VSTI_ORIG = TI_ORIG            
  From TTFACA_OPCI            
  Where CO_EMPR = @ISCO_EMPR            
  And CO_MODU = 'TEEM0001'            
  And CO_MENU = 'FTEEPBT'            
        
  If @VSTI_CAMB Is Null            
   Select @VSTI_CAMB = TI_CAMB, @VSTI_ORIG = TI_ORIG            
   From TMPARA_TESO            
   Where CO_EMPR = @ISCO_EMPR            
  
        
Select @VSNU_AMAR_AUXI = '@@@@'        
        
Declare CU_TDDOCU_PAGA_Q01_1 cursor        
For        
Select T2.NU_AMAR, T2.FE_AMAR, T2.CO_MONE, T2.CO_TIPO_DOCU, T2.NU_DOCU, MAX(T2.IM_TOTA)  
From TDDOCU_PAGA T1, TCDOCU_PAGA T2        
Where T1.CO_EMPR = @ISCO_EMPR         
And T1.CO_UNID_CONC = @ISCO_UNID_CONC        
And T1.NU_AMAR >= @ISNU_AMAR_INIC         
And T1.NU_AMAR <= @ISNU_AMAR_FINA        
And Year(T1.FE_AMAR) = Year(@IDFE_AMAR)        
And Month(T1.FE_AMAR) = Month(@IDFE_AMAR)        
AND T1.CO_EMPR = T2.CO_EMPR        
And T1.CO_UNID_CONC = T2.CO_UNID_CONC  
AND T1.NU_AMAR = T2.NU_AMAR        
AND T1.FE_AMAR = T2.FE_AMAR     
GROUP BY    T2.NU_AMAR, T2.FE_AMAR, T2.CO_MONE, T2.CO_TIPO_DOCU, T2.NU_DOCU   
--And CO_TIPO_DOCU IS NOT NULL         
        
Open CU_TDDOCU_PAGA_Q01_1        
Fetch CU_TDDOCU_PAGA_Q01_1 into @CSNU_AMAR, @CDFE_AMAR, @CSCO_MONE, @CSCO_TIDO_ORIG, @CSNU_DOCU_ORIG, @CNIM_TOTA  
While @@fetch_status = 0        
  Begin        
    If @@fetch_status != 0        
       Begin        
         Raiserror 20001 'Fin de archivo'        
         Close CU_TDDOCU_PAGA_Q01_1        
         Deallocate CU_TDDOCU_PAGA_Q01_1        
         Return         
       end         
        
    If @CSNU_AMAR != @VSNU_AMAR_AUXI        
       Begin        
 Select @VSNU_AMAR_AUXI = @CSNU_AMAR        
 Select @VINU_SECU = 0        
       End         
        
    Select @VINU_SECU = @VINU_SECU + 1        
        
    Insert into #TWDOCU_PAGA (NU_TRAN, NU_SECU, FE_AMAR, CO_MONE, CO_TIDO_ORIG, NU_DOCU_ORIG, IM_PAGO_ORIG)        
    Values (@CSNU_AMAR, @VINU_SECU, @CDFE_AMAR, @CSCO_MONE, @CSCO_TIDO_ORIG, @CSNU_DOCU_ORIG, @CNIM_TOTA)        
        
    Fetch CU_TDDOCU_PAGA_Q01_1 into @CSNU_AMAR, @CDFE_AMAR, @CSCO_MONE, @CSCO_TIDO_ORIG, @CSNU_DOCU_ORIG, @CNIM_TOTA        
  End        
        
Close CU_TDDOCU_PAGA_Q01_1        
Deallocate CU_TDDOCU_PAGA_Q01_1        
        
--Select * from #TWDOCU_PAGA        
--Order by NU_TRAN, NU_SECU        
        
        
Select @VINU_SECU = 0        
Select @VSNU_AMAR_AUXI = '@@@@'        
        
-- cursor obtiene todas las letras del documento por proveedor / cuenta       
Declare CU_TDDOCU_PAGA_Q01_1 cursor        
For        
  
Select T1.NU_AMAR, T1.CO_TIPO_DOCU, T1.NU_DOCU, T1.TI_AUXI_DOCU, T1.CO_PROV,   
( PatIndex( T3.ST_SIGN, 'S' ) - PatIndex( T3.ST_SIGN, 'N' ) )*  
  Round(dbo.FN_TCFACT_CAMB_Q05( T1.CO_MONE, T2.CO_MONE,  
  T2.FE_AMAR, T1.IM_PAGA, @VSTI_CAMB,  
  @VSTI_ORIG, 'N', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, T2.FA_TIPO_CAMB), 2)  
  
  
--IM_PAGA     
From TDDOCU_PAGA T1, TCDOCU_PAGA T2, TTDOCU_CNTB T3  
Where T1.CO_EMPR = @ISCO_EMPR       
And T1.CO_UNID_CONC = @ISCO_UNID_CONC    
And T1.NU_AMAR >= @ISNU_AMAR_INIC         
And T1.NU_AMAR <= @ISNU_AMAR_FINA        
And Year(T1.FE_AMAR) = Year(@IDFE_AMAR)        
And Month(T1.FE_AMAR) = Month(@IDFE_AMAR)        
and T1.CO_TIPO_DOCU IS NOT NULL     
And T1.CO_TIPO_DOCU = T3.TI_DOCU  
AND T1.CO_EMPR = T2.CO_EMPR        
And T1.CO_UNID_CONC = T2.CO_UNID_CONC  
AND T1.NU_AMAR = T2.NU_AMAR        
AND T1.FE_AMAR = T2.FE_AMAR   
--AND CO_CNTA_EMPR IS NOT NULL          
        
Open CU_TDDOCU_PAGA_Q01_1        
Fetch CU_TDDOCU_PAGA_Q01_1 into @CSNU_AMAR, @CSCO_TIDO_DEST, @CSNU_DOCU_DEST,    
@CSTI_AUXI_DOCU, @CSCO_PROV, @CNIM_PAGO_DEST        
While @@fetch_status = 0        
  Begin        
    If @@fetch_status != 0        
Begin        
         Raiserror 20001 'Fin de archivo'        
         Close CU_TDDOCU_PAGA_Q01_1        
         Deallocate CU_TDDOCU_PAGA_Q01_1        
         Return         
       end         
        
--    Select @CSNU_AMAR, @CSCO_TIPO_DOCU, @CSNU_DOCU        
        
    If @CSNU_AMAR != @VSNU_AMAR_AUXI        
       Begin        
 Select @VSNU_AMAR_AUXI = @CSNU_AMAR        
 Select @VINU_SECU = 0        
       End         
        
    Select @VINU_SECU = @VINU_SECU + 1        
        
    If NOT Exists ( Select * From #TWDOCU_PAGA         
 Where NU_TRAN = @CSNU_AMAR        
 And   NU_SECU = @VINU_SECU)        
       Insert into #TWDOCU_PAGA (NU_TRAN, NU_SECU, CO_TIDO_DEST, NU_DOCU_DEST, IM_PAGO_DEST, TI_AUXI_DOCU,CO_PROV)        
       Values (@CSNU_AMAR, @VINU_SECU, @CSCO_TIDO_DEST, @CSNU_DOCU_DEST, @CNIM_PAGO_DEST, @CSTI_AUXI_DOCU,@CSCO_PROV)        
    Else         
       Update #TWDOCU_PAGA         
       Set CO_TIDO_DEST = @CSCO_TIDO_DEST, NU_DOCU_DEST = @CSNU_DOCU_DEST, IM_PAGO_DEST = @CNIM_PAGO_DEST,  
     TI_AUXI_DOCU = @CSTI_AUXI_DOCU,CO_PROV = @CSCO_PROV    
     Where NU_TRAN = @CSNU_AMAR And NU_SECU = @VINU_SECU          
        
     Fetch CU_TDDOCU_PAGA_Q01_1 into @CSNU_AMAR, @CSCO_TIDO_DEST, @CSNU_DOCU_DEST, @CSTI_AUXI_DOCU, @CSCO_PROV, @CNIM_PAGO_DEST        
  End        
        
close CU_TDDOCU_PAGA_Q01_1        
deallocate CU_TDDOCU_PAGA_Q01_1        
        
Select   T1.NU_TRAN, T1.FE_AMAR, T2.DE_MONE, T1.CO_TIDO_ORIG, T1.NU_DOCU_ORIG, T1.IM_PAGO_ORIG, T1.CO_TIDO_DEST,         
  T1.NU_DOCU_DEST, T1.IM_PAGO_DEST, T1.TI_AUXI_DOCU, T1.CO_PROV     
From     #TWDOCU_PAGA T1        
Left Outer Join TTMONE T2        
On    T1.CO_MONE = T2.CO_MONE        
Order By NU_TRAN, NU_SECU         
Return  
        
/*------------------------------ FIN ---------------------------------*/ 
GO
